Amazon ECS でタスクの起動方法の選択肢を教えてください
困っていた内容
コンテナ環境として ECS を検討しています。
コンテナの実行方法としてはいくつか方法があるようですが、選択肢の概要について教えてください。
どんな方法があるの?
ECS でコンテナを実行する方法は大きく二つです。
- Amazon ECS サービスを使用する方法
- RunTask/StartTask API を使用する方法
二つ目の方法は、直接 API を実行する方法や EventBridge を経由した方法など、更に細分化されます。
Amazon ECS サービスを使用する方法
ECS サービスで指定した数(desiredCount)のタスクを自動的に起動、維持する方法です。
ウェブアプリケーションなど長時間実行するワークロード向けで、ELB や Auto Scaling とも連携します。
コンテナで問題が発生してタスクが停止した場合も、ECS サービスによって自動的に新しいタスクへ置き換えが行われます。(利用者が直接タスクの停止・起動指示等を行う必要はありません)
AWS 公式ドキュメントでは、サービススケジューラや ECS サービス、サービスタスクという用語が使用されます。
RunTask(StartTask)API を使用する方法
ECS の API を実行してタスクを起動する方法です。(AWS マネジメントコンソールからも起動できます)
バッチ処理など処理が終わると停止するワークロード向けで、他の AWS サービスを利用してスケジューリングも可能です。 ※例:EventBridge、AWS Batch、AWS Step Functions
API の実行に応じてタスクが起動されますが、エラー等でタスクが停止しても自動的に置き換えは行われません。
AWS 公式ドキュメントでは、スタンドアロンタスクやスケジュールされたタスク、カスタムスケジューラという用語が使用されます。
- Amazon ECS コンソールを使用したスタンドアロンタスクの実行 - Amazon Elastic Container Service
- スケジュールされたタスク - Amazon Elastic Container Service